package cn.hinglo.common.util;

import cn.hinglo.common.entity.Result;
import cn.hinglo.common.enums.ResponseEnum;


/**
 * @createTime: 2018/1/3
 * @author: HingLo
 * @description: 结果值返回类型定义
 */
public class ResultKit {


    /**
     * 默认成功的方法，不需要返回参数
     *
     * @return 结果值
     */
    public static Result<Object> success() {
        return success(null);
    }

    /**
     * 请求成功
     *
     * @param object 请求成功返回的值
     * @return 操作结果
     */
    public static Result<Object> success(Object object) {
        return success(ResponseEnum.SUCCESS, object);
    }

    /***
     * 请求成功
     * @param responseEnum 枚举类型
     * @param object 响应对象
     * @return 返回结果
     */
    public static Result<Object> success(ResponseEnum responseEnum, Object object) {
        return success(responseEnum.getCode(), responseEnum.getMessage(), object);
    }

    /***
     * 请求成功的返回
     * @param code 响应吗
     * @param msg 响应消息
     * @param object 响应内容
     * @return 返回内容
     */
    public static Result<Object> success(Integer code, String msg, Object object) {
        return new Result<>(code, msg, object);
    }

    /**
     * 默认成功的方法，不需要返回参数
     *
     * @return 结果值
     */
    public static Result<Object> error() {
        return error(ResponseEnum.FAIL, null);
    }

    /**
     * 请求成功
     *
     * @param msg 请求成功返回的值
     * @return 操作结果
     */
    public static Result<Object> error(String msg) {
        return error(ResponseEnum.FAIL.getCode(), msg, null);
    }

    /***
     * 请求成功
     * @param responseEnum 枚举类型
     * @param object 响应对象
     * @return 返回结果
     */
    public static Result<Object> error(ResponseEnum responseEnum, Object object) {
        return error(responseEnum.getCode(), responseEnum.getMessage(), object);
    }

    /***
     * 请求错误的返回
     * @param code 响应吗
     * @param msg 响应消息
     * @return 返回内容
     */
    public static Result<Object> error(Integer code, String msg) {
        return new Result<>(code, msg, null);
    }

    /***
     * 请求错误的返回
     * @param code 响应吗
     * @param msg 响应消息
     * @param object 响应内容
     * @return 返回内容
     */
    public static Result<Object> error(Integer code, String msg, Object object) {
        return new Result<>(code, msg, object);
    }

}
